home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / mcu332 / 332equ.arc / 332TPU.EQU < prev    next >
Text File  |  1990-03-12  |  38KB  |  745 lines

  1.  
  2. ****************************************************************************
  3. * $RCSfile: 332tpu.equ $
  4. * $Revision: 1.1 $
  5. * $Date: 90/03/12 13:45:51 $
  6. *
  7. *       -------------------------------------------------------------
  8. *       Module Name:        332TPU - MC68332 TPU Registers
  9. *       -------------------------------------------------------------
  10. *
  11. *       Description:
  12. *          1. This file contains EQUates for all the Time Processing
  13. *             Unit (TPU) registers and bits for the MC68332.  Consult
  14. *             the "Time Processing Unit User's Manual", part number
  15. *             TPU32UM/AD, for more details.
  16. *          2. A 512-byte address space is reserved for the TPU, though not
  17. *             all are used.
  18. *          3. The ABSOLUTE address area where the register array block
  19. *             appears in memory is specified by the value of REG$, which
  20. *             should be defined in the user's system definitions.  The
  21. *             value of REG$ is $YFF000, where Y = M111 and M reflects the
  22. *             modmap bit (MM) in the module configuration register (MCR).
  23. *
  24. *                   REG$ value    Comments
  25. *                   ----------    ---------------------------------
  26. *                   $007FF000     MCR MM bit = 0
  27. *                   $00FFF000     MCR MM bit = 1   (reset default)
  28. *                   $FFFFF000     MCR MM bit = 1   (reset default)
  29. *                                   Forces short addressing (unused 
  30. *                                   upper address lines are ignored)
  31. *          4. The following pages summarize these registers and their
  32. *             associated addresses.
  33. *
  34. *       Notes:
  35. *          1. Motorola reserves the right to make changes to this file.
  36. *             Although this file has been carefully reviewed and is
  37. *             believed to be reliable, Motorola does not assume any
  38. *             liability arising out of its use.  This code may be freely
  39. *             used and/or modified at no cost or obligation to the user.
  40. *          2. All descriptions are WORD values unless stated otherwise.
  41. *                +----------------- C A U T I O N -----------------+
  42. *                | All TPU registers are 16-bits in length and are |
  43. *                | accessable as word or long-word transfers with  |
  44. *                | the execption of the interrupt status register, |
  45. *                | which is also accessable on a byte basis.  Thus |
  46. *                | all byte sized instructions (MOVE.B, OR.B,      |
  47. *                | AND.B, etc.) and byte only instructions (BCHG,  |
  48. *                | BCLR, BSET, BTST) are not allowed except on the |
  49. *                | interrupt status register (CISR).  C compilers  |
  50. *                | must not optimize code into illegal register    |
  51. *                | access instructions!                            |
  52. *                +-------------------------------------------------+
  53. *          3. The DEF macro along with the BIT$CODE symbol controls the
  54. *             actual bit definitions.  See the DEF macro in the DEF.MAC
  55. *             file for details.
  56. *          4. This file was made for use with the Motorola Development
  57. *             Systems M68000 Family Structured Assembler for MS-DOS,
  58. *             known as M68MASM.
  59. *          5. To use this file, either use an INCLUDE statement or just
  60. *             merge this file into your source code file.  Consult your
  61. *             assembler's user's manual for the details specific to your
  62. *             situation.  Reference the code segment example below for
  63. *             usage ideas (shown in M68MASM for MS-DOS syntax).
  64. *
  65. *             REG$     EQU      $FFFFF000         Register base address
  66. *             * NOTE: A31-24 unused in MC68332, so we set them all =1
  67. *             *       in order to use absolute short addressing mode!
  68. *                      NOLIST
  69. *                      INCLUDE  "DEF.MAC"
  70. *                      INCLUDE  "332TPU.EQU"
  71. *                      LIST
  72. *             START    CLR.W    TTCR+TPU$         Absolute addressing!
  73. *                      LEA      TPU$,A6           .      OR
  74. *                      CLR.W    (TTCR,A6)         Indexed addressing!
  75. *             *    Bit number usage w/indexing!
  76. *                      BTST     #.CH3,(CISR+1,A6)
  77. *                      OR.W     #1<<.SUPV,(TMCR,A6)
  78. *                      OR.W     (1<<.STOP)+(1<<.STF),(TMCR,A6)
  79. *             *                                   .      OR
  80. *             *    Bit value usage w/indexing!
  81. *                      AND.W    #(-_SUPV-1)&$FFFF,(TMCR,A6)
  82. *                      OR.W     _STOP+_STF,(TMCR,A6)
  83. *             *    Bit field usage w/indexing!
  84. *                      MOVE.W   #(5*TINTL)+((64>>4)*TINTV),(TILR,A6)
  85. *             *    Bit field mask usage w/indexing!
  86. *                      MOVE.W   (TILR,A6),D0
  87. *                      MOVE.W   D0,D1
  88. *                      AND.W    #TINTL_MSK,D0    Isolate ILQSPI field
  89. *                      MOVE.L   #.TINTL,D2       .  (D2= shift count)
  90. *                      LSR.W    D2,D0            and right justify it!
  91. *                      AND.W    #TINTL_NMSK,D1   Clear ILQSPI field.
  92. *             *
  93. *             *    Macro to initialize a Channel
  94. *                      INIT_CH  .CH15,F$DIO,DIO$INIT,DIO.MATCH,P$HIGH
  95. *             *    Macro to set up Channel Function Select Registers
  96. *                      SET_CF   .CH10,F$SM
  97. *             *    Macro to set up 2-bit Channel Fields in registers
  98. *                      SET_XX   .CH4,2,HSQR
  99. *                      SET_XX   .CH9,1,HSRR
  100. *                      SET_XX   .CH14,3,CPR
  101. *
  102. *             For bit fields, a value (0-N) will be placed inside.  As
  103. *             can be seen in the last line above, this is accomplished
  104. *             by multiplying the bit field label by the desired value
  105. *             for the field.  This line initializes the TILR register
  106. *             which has two bit fields, TINTL_ and TINTV_.  These
  107. *             fields are initialized to interrupt level 5 and interrupt
  108. *             base vector 4 respectively, by this line (places a value of
  109. *             $0540 into the TICR register).
  110. *          6. Be careful when using any of the BIT instructions (BCHG,
  111. *             BCLR, BSET, BTST), as they will only operate on a BYTE of
  112. *             memory, not a WORD.  Thus to access a bit in the least
  113. *             significant half of a word sized register (B0-B7), "+1"
  114. *             must be added to the operand address.  See the code
  115. *             segment example in item 5 above.
  116. *          7. Because the equate files can generate many listing pages,
  117. *             the user may wish to disable the listing via NOLIST and
  118. *             LIST directives as seen in the above example code.
  119. *          8. The latest version of this file is maintained on the
  120. *             Motorola FREEWARE Bulletin Board, 512/891-FREE (512/891-
  121. *             3733).  It operates continuously (except for maintenance)
  122. *             at 1200-2400 baud, 8-bits, no parity.  Download the
  123. *             archive file 332EQU.ARC to get all the files.
  124. *
  125. ****************************************************************************
  126.  
  127.  
  128. ****************************************************************************
  129. * Initialize Channel Macro:
  130. *   Syntax:            INIT_CH  <channel#>,<fnct>,<HSRcode>,<HScode>,<priority>
  131. *
  132. *     where:  <channel#>     is the channel number to be set.
  133. *             <fnct>         is the function value for <channel#>.
  134. *             <HSRcode>      is the host service request code for <channel#>.
  135. *             <HScode>       is the host sequence code for <channel#>.
  136. *             <priority>     is the priority code for <channel#>.
  137. *
  138. *   Action:
  139. *     Initializes the specified channel for the specified function.  This
  140. *     involves setting the appropriate channel fields in the CFSRn, HSRQn,
  141. *     HSRRn, and CPR registers without affecting any other register field.
  142. *     Preserves all An/Dn registers.
  143. *
  144. *   Notes:
  145. *     1. The registers are initialized in the following order as recommended
  146. *        in the TPU User's Manual:  CFSRn, HSQRn, HSRRn, CPRn.
  147. *
  148. INIT_CH MACRO
  149.         SET_CF  \1,\2
  150.         SET_XX  \1,\3,HSQR
  151.         SET_XX  \1,\4,HSRR
  152.         SET_XX  \1,\5,CPR
  153.         ENDM
  154.  
  155. ****************************************************************************
  156. * Set Channel Function Macro:
  157. *   Syntax:            SET_CF  <channel#>,<value>
  158. *
  159. *     where:  <channel#>     is the channel number to be set.
  160. *             <value>        is the function value for <channel#>.
  161. *
  162. *   Action:
  163. *     Sets the specified 4-bit channel number function field of the
  164. *     appropriate Channel Function Select Register (CFSR0, CFSR1, CFSR2,
  165. *     CFSR3) to the specified value without affecting any other CFSR field.
  166. *     Preserves all An/Dn registers.
  167. *
  168. SET_CF  MACRO
  169. OFFSET$ SET     ((3-(\1/4))*2)+CFSR
  170. SHFT$   SET     (\1-((\1/4)*4))*4
  171. MSK$    SET     ((-($F<<SHFT$))-1)&$FFFF
  172.         MOVE.L  D0,-(A7)
  173.         MOVE.W  OFFSET$+REG$,D0
  174.         AND.W   #MSK$,D0
  175.         OR.W    #(\2&$F)<<SHFT$,D0
  176.         MOVE.W  D0,OFFSET$+REG$
  177.         MOVE.L  (A7)+,D0
  178.         ENDM
  179.  
  180. ****************************************************************************
  181. * Set 2-bit Channel Field Macro:
  182. *   Syntax:            SET_XX  <channel#>,<value>,<register>
  183. *
  184. *     where:  <channel#>     is the channel number to be set.
  185. *             <value>        is the function value for <channel#>.
  186. *             <register>     is the register mneumonic for the register
  187. *                            to be set (HSQR, HSRR, CPR).
  188. *
  189. *   Action:
  190. *     Sets the specified 2-bit channel number field of the specified
  191. *     register to the specified value without affecting any other field.
  192. *     Preserves all An/Dn registers.
  193. *
  194. SET_XX  MACRO
  195. OFFSET$ SET     ((1-(\1/8))*2)+\3
  196. SHFT$   SET     (\1-((\1/8)*8))*2
  197. MSK$    SET     ((-($3<<SHFT$))-1)&$FFFF
  198.         MOVE.L  D0,-(A7)
  199.         MOVE.W  OFFSET$+REG$,D0
  200.         AND.W   #MSK$,D0
  201.         OR.W    #(\2&$3)<<SHFT$,D0
  202.         MOVE.W  D0,OFFSET$+REG$
  203.         MOVE.L  (A7)+,D0
  204.         ENDM
  205.  
  206. ****************************************************************************
  207. * Wait for HSRR Channel Field to Become Ready Macro:
  208. *   Syntax:            RDY_XX  <channel#>
  209. *
  210. *     where:  <channel#>     is the channel number to be checked.
  211. *
  212. *   Action:
  213. *     Waits for the specified 2-bit channel number field of the Host
  214. *     Service Request Register (HSRR) to return to the ready state (No
  215. *     Host Service = 0) without affecting any other field.
  216. *     Preserves all An/Dn registers.
  217. *
  218. RDY_XX  MACRO
  219. OFFSET$ SET     ((1-(\1/8))*2)+HSRR
  220. SHFT$   SET     (\1-((\1/8)*8))*2
  221. MSK$    SET     ((-($3<<SHFT$))-1)&$FFFF
  222.         MOVE.L  D0,-(A7)
  223. RDY\@   MOVE.W  OFFSET$+REG$,D0
  224.         AND.W   #MSK$,D0
  225.         BNE     RDY\@
  226.         MOVE.L  (A7)+,D0
  227.         ENDM
  228.  
  229.  
  230. *********************************************************************
  231. * Define Module Base Address
  232. *********************************************************************
  233. TPU$    EQU     REG$+$E00    TPU base address
  234.  
  235. *********************************************************************
  236. * Define Registers and Bits
  237. *********************************************************************
  238. TMCR    EQU     $000         TPU Module Configuration Register
  239.         DEF     STOP,B15     . stop TPU clock
  240.         DEF     TCR1P,B13,2  . TCR1 prescaler control        (2 bits)
  241.         DEF     TCR2P,B11,2  . TCR2 prescaler control        (2 bits)
  242.         DEF     EMU,B10      . emulation control
  243. * NOTE:  TCR1P, TCR2P, and EMU are WRITE-ONCE fields!
  244.         DEF     T2CG,B9      . TCR2 clock/gate control
  245.         DEF     STF,B8       . stop flag
  246.         DEF     SUPV,B7      . supervisor data space
  247.         DEF     PSCK,B6      . prescaler clock
  248.         DEF     IARB,B0,4    . interrupt arbitration         (4 bits)
  249. *-- Prescaler Control Values --*
  250. DIV1    EQU     0            Divide by 1
  251. DIV2    EQU     1            Divide by 2
  252. DIV4    EQU     2            Divide by 4
  253. DIV8    EQU     3            Divide by 8
  254. *-------------------------------------------------------------------*
  255. TTCR    EQU     $002         TPU Test Configuration Register
  256. *    +-------------------- C A U T I O N ---------------------+
  257. *    |  The bits here are for configuring and controlling the |
  258. *    |  TPU module for testing purposes.  General users       |
  259. *    |  should not alter the TTCR register!                   |
  260. *    +--------------------------------------------------------+
  261.         DEF     INCAD,B12    . increment uPC address
  262.         DEF     TCR1C,B11    . TCR clock source
  263.         DEF     ACUTR,B9,2   . TPU response to ACUT line     (2 bits)
  264.         DEF     TSOSEL,B4,3  . TPU scan out selector         (3 bits)
  265. * NOTE:  SOSEL bit field is different bit position from SIM's SIMTR!
  266.         DEF     TSISEL,B1,3  . TPU scan in  selector         (3 bits)
  267.         DEF     TMM,B0       . test memory map bit
  268. *-------------------------------------------------------------------*
  269. DSCR    EQU     $004         Development Support Control Register
  270.         DEF     HOT4,B15     . halt on next T4 state
  271.         DEF     BLC,B10      . branch latch control
  272.         DEF     CLKS,B9      . stop TCR's during halt
  273.         DEF     FRZ,B7,2     . IMB freeze response select    (2 bits)
  274.         DEF     CCL,B6       . channel condition latch
  275.         DEF     BP,B5        . breakpoint: uPC match
  276.         DEF     BC,B4        . breakpoint: channel register match
  277.         DEF     BH,B3        . breakpoint: host service latch
  278.         DEF     BL,B2        . breakpoint: link service latch
  279.         DEF     BM,B1        . breakpoint: match recognition latch
  280.         DEF     BT,B0        . breakpoint: transition detect latch
  281. *-------------------------------------------------------------------*
  282. DSSR    EQU     $006         Development Support Status Register
  283.         DEF     BKPT,B7      . breakpoint assert flag
  284.         DEF     PCBK,B6      . uPC match breakpoint flag
  285.         DEF     CHBK,B5      . channel register breakpoint flag
  286.         DEF     SRBK,B4      . service request breakpoint flag
  287.         DEF     TPUF,B3      . TPU in freeze flag
  288. *-------------------------------------------------------------------*
  289. TICR    EQU     $008         TPU Interrupt Configuration Register
  290.         DEF     TINTL,B8,3   . interrupt request level       (3 bits)
  291.         DEF     TINTV,B4,4   . channel interrupt base vector (4 bits)
  292. * NOTE:  Channel interrupt base vector is actually the upper nibble
  293. *        of the interrupt vector for the TPU.  The lower nibble is
  294. *        supplied by the number of the interrupting channel, which
  295. *        creates a separate vector for each channel (block of 16
  296. *        vectors).
  297. *-------------------------------------------------------------------*
  298. CIER    EQU     $00A         Channel Interrupt Enable Register
  299.         DEF     CH15,B15     . channel 15
  300.         DEF     CH14,B14     . channel 14
  301.         DEF     CH13,B13     . channel 13
  302.         DEF     CH12,B12     . channel 12
  303.         DEF     CH11,B11     . channel 11
  304.         DEF     CH10,B10     . channel 10
  305.         DEF     CH9,B9       . channel  9
  306.         DEF     CH8,B8       . channel  8
  307.         DEF     CH7,B7       . channel  7
  308.         DEF     CH6,B6       . channel  6
  309.         DEF     CH5,B5       . channel  5
  310.         DEF     CH4,B4       . channel  4
  311.         DEF     CH3,B3       . channel  3
  312.         DEF     CH2,B2       . channel  2
  313.         DEF     CH1,B1       . channel  1
  314.         DEF     CH0,B0       . channel  0
  315. *-------------------------------------------------------------------*
  316. CFSR0   EQU     $00C         Channel Function Select Register 0
  317. CFSR1   EQU     $00E         Channel Function Select Register 1
  318. CFSR2   EQU     $010         Channel Function Select Register 2
  319. CFSR3   EQU     $012         Channel Function Select Register 3
  320. CFSR    EQU     CFSR0        Channel Fnct. Select Reg's Base Address
  321. *-- Channel Functions --*
  322. F$DIO   EQU     $8           Descrete input/output
  323. F$ITC   EQU     $A           Input capture/input transition counter
  324. F$OC    EQU     $E           Output compare
  325. F$PWM   EQU     $9           Pulse width modulation
  326. F$PMA   EQU     $B           Period measurement w/additional detection
  327. F$PMM   EQU     F$PMA        Period measurement w/missing detection
  328. F$PSP   EQU     $C           Position synchronized pulse generation
  329. F$SM    EQU     $D           Stepper motor
  330. F$PPWA  EQU     $F           Period/pulse-width accumulator
  331. *-------------------------------------------------------------------*
  332. HSQR0   EQU     $014         Host Sequence Register 0
  333. HSQR1   EQU     $016         Host Sequence Register 1
  334. HSQR    EQU     HSQR0        Host Sequence Registers Base Address
  335. *-- Sequence codes (organized by channel function + period) --*
  336. DIO.TRANS   EQU    0         Transition mode
  337. DIO.MATCH   EQU    1         Match mode
  338. DIO.PIN     EQU    2         Record pin state
  339. * NOTE:  DIO sequence codes only used by DIO$INIT service request!
  340. *
  341. ITC.SNGL    EQU    0         No link, single     mode
  342. ITC.CONT    EQU    1         No link, continuous mode
  343. ITC.LSNGL   EQU    2         Link,    single     mode
  344. ITC.LCONT   EQU    3         Link,    continuous mode
  345. *
  346. OC.XALL     EQU    0         Execute all functions
  347. OC.TCRN     EQU    2         Only update TCRn parameters
  348. *
  349. PWM.NONE    EQU    0         None
  350. *
  351. PMA.BANK    EQU    0         PMA bank mode
  352. PMA.COUNT   EQU    1         PMA count mode
  353. *
  354. PMM.BANK    EQU    2         PMM bank mode
  355. PMM.COUNT   EQU    3         PMM count mode
  356. *
  357. PSP.ANGLE   EQU    0         Pulse width set by angle
  358. PSP.TIME    EQU    1         Pulse width set by time
  359. *
  360. SM.NONE     EQU    0         None
  361. *
  362. PPWA.24PER  EQU    0         24-bit period
  363. PPWA.16PERL EQU    1         16-bit period + link
  364. PPWA.24WID  EQU    2         24-bit pulse width
  365. PPWA.16WIDL EQU    3         16-bit pulse width + link
  366. *-------------------------------------------------------------------*
  367. HSRR0   EQU     $018         Host Service Request Register 0
  368. HSRR1   EQU     $01A         Host Service Request Register 1
  369. HSRR    EQU     HSRR0        Host Service Request Registers Base Address
  370. *    +-------------------- C A U T I O N ---------------------+
  371. *    | Do not OR values into HSRRn, as another channel value  |
  372. *    | could be changing due to TPU operation when the OR     |
  373. *    | instruction performs its read-modify-write operation.  |
  374. *    | Use a MOVE.W instruction instead to set values into    |
  375. *    | HSRRn.                                                 |
  376. *    +--------------------------------------------------------+
  377. *-- Service codes (organized by channel function + dollar sign) --*
  378. DIO$NONE    EQU    0         None
  379. DIO$HIGH    EQU    1         Force output high
  380. DIO$LOW     EQU    2         Force output low
  381. DIO$INIT    EQU    3         Initialization
  382. *
  383. ITC$NONE    EQU    0         None
  384. ITC$INIT    EQU    1         Initialization
  385. *
  386. OC$NONE     EQU    0         None
  387. OC$HPULSE   EQU    1         Host initiated pulse mode
  388. OC$CPULSE   EQU    3         Continuous pulse mode
  389. *
  390. PWM$NONE    EQU    0         None
  391. PWM$IMMED   EQU    1         Immediate update request
  392. PWM$INIT    EQU    2         Initialization
  393. *
  394. PMA$NONE    EQU    0         None
  395. PMA$INIT    EQU    1         Initialization
  396. *
  397. PMM$NONE    EQU    0         None
  398. PMM$INIT    EQU    1         Initialization
  399. *
  400. PSP$NONE    EQU    0         None
  401. PSP$IMMED   EQU    1         Immediate update request
  402. PSP$INIT    EQU    2         Initialization
  403. PSP$FCHNG   EQU    3         Force change
  404. *
  405. SM$NONE     EQU    0         None
  406. SM$INIT     EQU    2         Initialization
  407. SM$STEP     EQU    3         Step request
  408. *
  409. PPWA$NONE   EQU    0         None
  410. PPWA$INIT   EQU    2         Initialization
  411. *-------------------------------------------------------------------*
  412. CPR0    EQU     $01C         Channel Priority Register 0
  413. CPR1    EQU     $01E         Channel Priority Register 1
  414. CPR     EQU     CPR0         Channel Priority Registers Base Address
  415. *-- Defined priorities --*
  416. P$OFF    EQU    0            No     priority (Channel disabled)
  417. P$LOW    EQU    1            Low    priority
  418. P$MIDDLE EQU    2            Middle priority
  419. P$HIGH   EQU    3            High   priority
  420. *-------------------------------------------------------------------*
  421. CISR    EQU     $020         Channel Interrupt Status Register
  422. * NOTE:  Uses CH15-CH0 as per Channel Interrupt Enable Register!
  423. *-------------------------------------------------------------------*
  424. LINK    EQU     $022         Link Register
  425. * NOTE:  Uses CH15-CH0 as per Channel Interrupt Enable Register!
  426. *-------------------------------------------------------------------*
  427. SGLR    EQU     $024         Service Grant Latch Register
  428. * NOTE:  Uses CH15-CH0 as per Channel Interrupt Enable Register!
  429. *-------------------------------------------------------------------*
  430. DCNR    EQU     $026         Decoded Channel Number Register
  431. * NOTE:  Uses CH15-CH0 as per Channel Interrupt Enable Register!
  432. *-------------------------------------------------------------------*
  433. *UNUSED EQU     $028-$0FF    Unused positions
  434. *-------------------------------------------------------------------*
  435. PRAM0.0 EQU     $100         Parameter RAM for Channel 0, register 0
  436. PRAM0.1 EQU     $102         Parameter RAM for Channel 0, register 1
  437. PRAM0.2 EQU     $104         Parameter RAM for Channel 0, register 2
  438. PRAM0.3 EQU     $106         Parameter RAM for Channel 0, register 3
  439. PRAM0.4 EQU     $108         Parameter RAM for Channel 0, register 4
  440. PRAM0.5 EQU     $10A         Parameter RAM for Channel 0, register 5
  441. *UNUSED EQU     $10C-$10F    Unused positions
  442.         DEF     TBS,B5,4     . time base selection
  443.         DEF     PAC,B2,3     . pin action control
  444.         DEF     PSC,B0,2     . pin state control
  445. * NOTE:  TBS, PAC, and PSC apply to each Parameter RAM register!
  446. TBS.IC1M1  EQU    %0000<<.TBS  Input  channel: capture TCR1, match TCR1
  447. TBS.IC1M2  EQU    %0001<<.TBS  Input  channel: capture TCR1, match TCR2
  448. TBS.IC2M1  EQU    %0010<<.TBS  Input  channel: capture TCR2, match TCR1
  449. TBS.IC2M2  EQU    %0011<<.TBS  Input  channel: capture TCR2, match TCR2
  450. TBS.OC1M1  EQU    %0100<<.TBS  Output channel: capture TCR1, match TCR1
  451. TBS.OC1M2  EQU    %0101<<.TBS  Output channel: capture TCR1, match TCR2
  452. TBS.OC2M1  EQU    %0110<<.TBS  Output channel: capture TCR2, match TCR1
  453. TBS.OC2M2  EQU    %0111<<.TBS  Output channel: capture TCR2, match TCR2
  454. TBS.NCHNG  EQU    %1111<<.TBS  No change
  455. *
  456. PAC.IGNORE EQU    %000<<.PAC   Ignore (do not detect transition)
  457. PAC.RISE   EQU    %001<<.PAC   Detect rising  edge
  458. PAC.FALL   EQU    %010<<.PAC   Detect falling edge
  459. PAC.EITHER EQU    %011<<.PAC   Detect either  edge
  460. PAC.NCHNG  EQU    %111<<.PAC   Do not change PAC
  461. *
  462. PSC.SET    EQU    %00<<.PSC    Force pin as specified by PAC latches
  463. PSC.HIGH   EQU    %01<<.PSC    Force pin high
  464. PSC.LOW    EQU    %10<<.PSC    Force pin low
  465. PSC.NONE   EQU    %11<<.PSC    Do not force any state
  466. *-------------------------------------------------------------------*
  467. PRAM1.0 EQU     $110         Parameter RAM for Channel 1, register 0
  468. PRAM1.1 EQU     $112         Parameter RAM for Channel 1, register 1
  469. PRAM1.2 EQU     $114         Parameter RAM for Channel 1, register 2
  470. PRAM1.3 EQU     $116         Parameter RAM for Channel 1, register 3
  471. PRAM1.4 EQU     $118         Parameter RAM for Channel 1, register 4
  472. PRAM1.5 EQU     $11A         Parameter RAM for Channel 1, register 5
  473. *UNUSED EQU     $11C-$11F    Unused positions
  474. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  475. *-------------------------------------------------------------------*
  476. PRAM2.0 EQU     $120         Parameter RAM for Channel 2, register 0
  477. PRAM2.1 EQU     $122         Parameter RAM for Channel 2, register 1
  478. PRAM2.2 EQU     $124         Parameter RAM for Channel 2, register 2
  479. PRAM2.3 EQU     $126         Parameter RAM for Channel 2, register 3
  480. PRAM2.4 EQU     $128         Parameter RAM for Channel 2, register 4
  481. PRAM2.5 EQU     $12A         Parameter RAM for Channel 2, register 5
  482. *UNUSED EQU     $12C-$12F    Unused positions
  483. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  484. *-------------------------------------------------------------------*
  485. PRAM3.0 EQU     $130         Parameter RAM for Channel 3, register 0
  486. PRAM3.1 EQU     $132         Parameter RAM for Channel 3, register 1
  487. PRAM3.2 EQU     $134         Parameter RAM for Channel 3, register 2
  488. PRAM3.3 EQU     $136         Parameter RAM for Channel 3, register 3
  489. PRAM3.4 EQU     $138         Parameter RAM for Channel 3, register 4
  490. PRAM3.5 EQU     $13A         Parameter RAM for Channel 3, register 5
  491. *UNUSED EQU     $13C-$13F    Unused positions
  492. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  493. *-------------------------------------------------------------------*
  494. PRAM4.0 EQU     $140         Parameter RAM for Channel 4, register 0
  495. PRAM4.1 EQU     $142         Parameter RAM for Channel 4, register 1
  496. PRAM4.2 EQU     $144         Parameter RAM for Channel 4, register 2
  497. PRAM4.3 EQU     $146         Parameter RAM for Channel 4, register 3
  498. PRAM4.4 EQU     $148         Parameter RAM for Channel 4, register 4
  499. PRAM4.5 EQU     $14A         Parameter RAM for Channel 4, register 5
  500. *UNUSED EQU     $14C-$14F    Unused positions
  501. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  502. *-------------------------------------------------------------------*
  503. PRAM5.0 EQU     $150         Parameter RAM for Channel 5, register 0
  504. PRAM5.1 EQU     $152         Parameter RAM for Channel 5, register 1
  505. PRAM5.2 EQU     $154         Parameter RAM for Channel 5, register 2
  506. PRAM5.3 EQU     $156         Parameter RAM for Channel 5, register 3
  507. PRAM5.4 EQU     $158         Parameter RAM for Channel 5, register 4
  508. PRAM5.5 EQU     $15A         Parameter RAM for Channel 5, register 5
  509. *UNUSED EQU     $15C-$15F    Unused positions
  510. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  511. *-------------------------------------------------------------------*
  512. PRAM6.0 EQU     $160         Parameter RAM for Channel 6, register 0
  513. PRAM6.1 EQU     $162         Parameter RAM for Channel 6, register 1
  514. PRAM6.2 EQU     $164         Parameter RAM for Channel 6, register 2
  515. PRAM6.3 EQU     $166         Parameter RAM for Channel 6, register 3
  516. PRAM6.4 EQU     $168         Parameter RAM for Channel 6, register 4
  517. PRAM6.5 EQU     $16A         Parameter RAM for Channel 6, register 5
  518. *UNUSED EQU     $16C-$16F    Unused positions
  519. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  520. *-------------------------------------------------------------------*
  521. PRAM7.0 EQU     $170         Parameter RAM for Channel 7, register 0
  522. PRAM7.1 EQU     $172         Parameter RAM for Channel 7, register 1
  523. PRAM7.2 EQU     $174         Parameter RAM for Channel 7, register 2
  524. PRAM7.3 EQU     $176         Parameter RAM for Channel 7, register 3
  525. PRAM7.4 EQU     $178         Parameter RAM for Channel 7, register 4
  526. PRAM7.5 EQU     $17A         Parameter RAM for Channel 7, register 5
  527. *UNUSED EQU     $17C-$17F    Unused positions
  528. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  529. *-------------------------------------------------------------------*
  530. PRAM8.0 EQU     $180         Parameter RAM for Channel 8, register 0
  531. PRAM8.1 EQU     $182         Parameter RAM for Channel 8, register 1
  532. PRAM8.2 EQU     $184         Parameter RAM for Channel 8, register 2
  533. PRAM8.3 EQU     $186         Parameter RAM for Channel 8, register 3
  534. PRAM8.4 EQU     $188         Parameter RAM for Channel 8, register 4
  535. PRAM8.5 EQU     $18A         Parameter RAM for Channel 8, register 5
  536. *UNUSED EQU     $18C-$18F    Unused positions
  537. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  538. *-------------------------------------------------------------------*
  539. PRAM9.0 EQU     $190         Parameter RAM for Channel 9, register 0
  540. PRAM9.1 EQU     $192         Parameter RAM for Channel 9, register 1
  541. PRAM9.2 EQU     $194         Parameter RAM for Channel 9, register 2
  542. PRAM9.3 EQU     $196         Parameter RAM for Channel 9, register 3
  543. PRAM9.4 EQU     $198         Parameter RAM for Channel 9, register 4
  544. PRAM9.5 EQU     $19A         Parameter RAM for Channel 9, register 5
  545. *UNUSED EQU     $19C-$19F    Unused positions
  546. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  547. *-------------------------------------------------------------------*
  548. PRAM10.0 EQU    $1A0         Parameter RAM for Channel 10, register 0
  549. PRAM10.1 EQU    $1A2         Parameter RAM for Channel 10, register 1
  550. PRAM10.2 EQU    $1A4         Parameter RAM for Channel 10, register 2
  551. PRAM10.3 EQU    $1A6         Parameter RAM for Channel 10, register 3
  552. PRAM10.4 EQU    $1A8         Parameter RAM for Channel 10, register 4
  553. PRAM10.5 EQU    $1AA         Parameter RAM for Channel 10, register 5
  554. *UNUSED  EQU    $1AC-$1AF    Unused positions
  555. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  556. *-------------------------------------------------------------------*
  557. PRAM11.0 EQU    $1B0         Parameter RAM for Channel 11, register 0
  558. PRAM11.1 EQU    $1B2         Parameter RAM for Channel 11, register 1
  559. PRAM11.2 EQU    $1B4         Parameter RAM for Channel 11, register 2
  560. PRAM11.3 EQU    $1B6         Parameter RAM for Channel 11, register 3
  561. PRAM11.4 EQU    $1B8         Parameter RAM for Channel 11, register 4
  562. PRAM11.5 EQU    $1BA         Parameter RAM for Channel 11, register 5
  563. *UNUSED  EQU    $1BC-$1BF    Unused positions
  564. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  565. *-------------------------------------------------------------------*
  566. PRAM12.0 EQU    $1C0         Parameter RAM for Channel 12, register 0
  567. PRAM12.1 EQU    $1C2         Parameter RAM for Channel 12, register 1
  568. PRAM12.2 EQU    $1C4         Parameter RAM for Channel 12, register 2
  569. PRAM12.3 EQU    $1C6         Parameter RAM for Channel 12, register 3
  570. PRAM12.4 EQU    $1C8         Parameter RAM for Channel 12, register 4
  571. PRAM12.5 EQU    $1CA         Parameter RAM for Channel 12, register 5
  572. *UNUSED  EQU    $1CC-$1CF    Unused positions
  573. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  574. *-------------------------------------------------------------------*
  575. PRAM13.0 EQU    $1D0         Parameter RAM for Channel 13, register 0
  576. PRAM13.1 EQU    $1D2         Parameter RAM for Channel 13, register 1
  577. PRAM13.2 EQU    $1D4         Parameter RAM for Channel 13, register 2
  578. PRAM13.3 EQU    $1D6         Parameter RAM for Channel 13, register 3
  579. PRAM13.4 EQU    $1D8         Parameter RAM for Channel 13, register 4
  580. PRAM13.5 EQU    $1DA         Parameter RAM for Channel 13, register 5
  581. *UNUSED  EQU    $1DC-$1DF    Unused positions
  582. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  583. *-------------------------------------------------------------------*
  584. PRAM14.0 EQU    $1E0         Parameter RAM for Channel 14, register 0
  585. PRAM14.1 EQU    $1E2         Parameter RAM for Channel 14, register 1
  586. PRAM14.2 EQU    $1E4         Parameter RAM for Channel 14, register 2
  587. PRAM14.3 EQU    $1E6         Parameter RAM for Channel 14, register 3
  588. PRAM14.4 EQU    $1E8         Parameter RAM for Channel 14, register 4
  589. PRAM14.5 EQU    $1EA         Parameter RAM for Channel 14, register 5
  590. PRAM14.6 EQU    $1EC         Parameter RAM for Channel 14, register 6
  591. PRAM14.7 EQU    $1EE         Parameter RAM for Channel 14, register 7
  592. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  593. *-------------------------------------------------------------------*
  594. PRAM15.0 EQU    $1F0         Parameter RAM for Channel 15, register 0
  595. PRAM15.1 EQU    $1F2         Parameter RAM for Channel 15, register 1
  596. PRAM15.2 EQU    $1F4         Parameter RAM for Channel 15, register 2
  597. PRAM15.3 EQU    $1F6         Parameter RAM for Channel 15, register 3
  598. PRAM15.4 EQU    $1F8         Parameter RAM for Channel 15, register 4
  599. PRAM15.5 EQU    $1FA         Parameter RAM for Channel 15, register 5
  600. PRAM15.6 EQU    $1FC         Parameter RAM for Channel 15, register 6
  601. PRAM15.7 EQU    $1FE         Parameter RAM for Channel 15, register 7
  602. * NOTE:  Uses TBS, PAC, and PSC as per Parameter RAM for Channel 0
  603. *********************************************************************
  604.  
  605.    IFNE     0   ------- don't assemble sample macro usage code --------
  606. * SAMPLE MACRO USAGE CODE:
  607. *   - Each line that follows is an independent example!
  608.         INIT_CH .CH15,F$OC,OC$HPULSE,OC.XALL,P$OFF
  609.         INIT_CH .CH14,F$DIO,DIO$HIGH,DIO.TRANS,P$LOW
  610.         INIT_CH .CH13,F$DIO,DIO$LOW,DIO.PIN,P$MIDDLE
  611.         INIT_CH .CH12,F$ITC,ITC$INIT,ITC.LSNGL,P$HIGH
  612.         INIT_CH .CH11,F$PMA,PMA$INIT,PMA.COUNT,P$OFF
  613.         INIT_CH .CH10,F$PMM,PMM$INIT,PMM.COUNT,P$LOW
  614.         INIT_CH .CH9,F$PSP,PSP$FCHNG,PSP.TIME,P$MIDDLE
  615.         INIT_CH .CH8,F$SM,SM$NONE,SM.NONE,P$HIGH
  616.         INIT_CH .CH7,F$SM,SM$INIT,SM.NONE,P$OFF
  617.         INIT_CH .CH6,F$SM,SM$STEP,SM.NONE,P$LOW
  618.         INIT_CH .CH5,F$PPWA,PPWA$INIT,PPWA.24PER,P$MIDDLE
  619.         INIT_CH .CH4,F$PPWA,PPWA$NONE,PPWA.16PERL,P$HIGH
  620.         INIT_CH .CH3,F$PPWA,PPWA$NONE,PPWA.24WID,P$OFF
  621.  
  622.         SET_CF  .CH15,1
  623.         SET_CF  .CH14,2
  624.         SET_CF  .CH13,3
  625.         SET_CF  .CH12,4
  626.         SET_CF  .CH11,5
  627.         SET_CF  .CH10,6
  628.         SET_CF  .CH9,7
  629.         SET_CF  .CH8,8
  630.         SET_CF  .CH7,9
  631.         SET_CF  .CH6,$A
  632.         SET_CF  .CH5,$B
  633.         SET_CF  .CH4,$C
  634.         SET_CF  .CH3,$D
  635.         SET_CF  .CH2,$E
  636.         SET_CF  .CH1,$F
  637.         SET_CF  .CH0,$1F
  638.  
  639.         SET_XX  .CH15,1,HSQR
  640.         SET_XX  .CH14,2,HSQR
  641.         SET_XX  .CH13,3,HSQR
  642.         SET_XX  .CH12,5,HSQR
  643.         SET_XX  .CH11,1,HSQR
  644.         SET_XX  .CH10,1,HSQR
  645.         SET_XX  .CH9,1,HSQR
  646.         SET_XX  .CH8,1,HSQR
  647.         SET_XX  .CH7,1,HSQR
  648.         SET_XX  .CH6,1,HSQR
  649.         SET_XX  .CH5,1,HSQR
  650.         SET_XX  .CH4,1,HSQR
  651.         SET_XX  .CH3,1,HSQR
  652.         SET_XX  .CH2,1,HSQR
  653.         SET_XX  .CH1,1,HSQR
  654.         SET_XX  .CH0,1,HSQR
  655.  
  656. *   - The lines that follow are a complete code segment example to set
  657. *     up channel 7 for the Descrete Input/Output (DIO) function as
  658. *     described in the TPU User's Manual.  Equates have been added
  659. *     to illustrate advanced TPU programming techniques.
  660. *
  661. SFREQ     EQU     16777216 System clock frequency (in Hz)
  662. * NOTE:  The SYNCR register also depends on SFREQ!
  663. TPU_ARB   EQU     7        Arbitration level for TPU
  664. TPU_ILVL  EQU     5        Interrupt   level for TPU
  665. TPU_VNBR  EQU     64       Interrupt vector number for TPU
  666. * NOTE:  TPU_VNBR must be modulo 16, as TPU uses 1 vector per channel.
  667. DIV1X     EQU     DIV2     Divide value for TCR1P_
  668. DIV2X     EQU     DIV2     Divide value for TCR2P_
  669. *
  670. * PSCK bit value for use in TMCR register (comment out the one not to use!):
  671. _PSCKBIT  EQU     0
  672. *_PSCKBIT EQU     PSCK_
  673.    IFEQ      _PSCKBIT
  674. PSCKVAL   EQU     32       System clock divide value = 32
  675.    ENDC
  676.    IFNE      _PSCKBIT
  677. PSCKVAL   EQU     4        System clock divide value = 4
  678.    ENDC
  679. *
  680. * T2CG bit value for use in TMCR register (comment out the one not to use!):
  681. *   - T2CG (TCR2) not required for this example, but is included here
  682. *     for completeness.
  683. _T2CGBIT  EQU     0
  684. *_T2CGBIT EQU     T2CG_
  685.    IFEQ      _T2CGBIT
  686. T2CGVAL   EQU     1        External clock divide value = 1
  687.    ENDC
  688.    IFNE      _T2CGBIT
  689. T2CGVAL   EQU     8        System   clock divide value = 8
  690.    ENDC
  691. *
  692. TCR1_DIV  EQU     (1<<DIV1X)*PSCKVAL  TCR1 frequency divide value
  693. TCR1FREQ  EQU     SFREQ/TCR1_DIV      TCR1 frequncy (in Hz)
  694. *
  695. TCR2_DIV  EQU     (1<<DIV2X)*T2CGVAL  TCR2 frequency divide value
  696. TCR2FREQ  EQU     SFREQ/TCR2_DIV      TCR2 frequncy (in Hz)
  697. *
  698. PINLVL_INIT EQU    0       Initial value for PIN_LEVEL param.
  699.  
  700.  
  701. *-- Initialize channel 7 ---------------------------------------------------
  702. *
  703. * Init. Module Configuration register:
  704. *   - set TCR1 prescaler
  705. *   - set TCR2 prescaler (Don't Care)
  706. *   - set supervisor data space
  707. *   - set PSCK and T2CG bits
  708. *   - set interrupt arbitration
  709. *
  710. TMCRVAL SET     DIV1X*TCR1P_+DIV2X*TCR2P_+_SUPV
  711. TMCRVAL SET     TMCRVAL+_PSCKBIT+_T2CGBIT+TPU_ARB*IARB_
  712.         MOVE.W  #TMCRVAL,TMCR+TPU$
  713.  
  714. * Init. Interrupt Configuration Register:
  715. *   - set interrupt level
  716. *   - set channel interrupt base vector
  717. *
  718.         MOVE.W  #TPU_ILVL*TINTL_+(TPU_VNBR>>4)*TINTV_,TICR+TPU$
  719.  
  720. * Init. Channel Interrupt Enable Register:
  721. *
  722.         OR.W    #_CH7,CIER+TPU$    . (OR doesn't affect other channels!)
  723.  
  724. * Initialize parameter ram (3 words):
  725. *   - set CHANNEL_CONTROL
  726. *   - set PIN_LEVEL to a known initial state value (optional)
  727. *   - set MATCH_RATE parameter = 15/10000 = 1.5 msec
  728. *
  729.         MOVE.W  #TBS.IC1M1+PAC.IGNORE+PSC.NONE,PRAM7.0+TPU$
  730.         MOVE.W  #PINLVL_INIT,PRAM7.1+TPU$
  731.         MOVE.W  #(15*TCR1FREQ)/10000,PRAM7.2+TPU$
  732.  
  733. * Initialize channel 7 for DIO "match rate" (periodic) operation:
  734. *
  735.         INIT_CH .CH7,F$DIO,DIO$INIT,DIO.MATCH,P$MIDDLE
  736.  
  737. * Wait for channel 7 to become ready (or wait for interrupt!):
  738. *
  739.         RDY_XX  .CH7
  740. *
  741. *-- Done with channel 7 ----------------------------------------------------
  742.  
  743. * Start next channel or coding function!
  744.    ENDC
  745.